package com.example.todoapp.http.controllers;

import com.example.todoapp.data.entities.Tag;
import com.example.todoapp.http.ResponseStruct;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

@RestController
public class TagController {

    // 使用静态 List 存储标签数据（内存存储）
    private static final List<Tag> tags = new ArrayList<>();

    // 初始化一些测试数据
    static {
        Tag tag1 = new Tag();
        tag1.setId(1L);
        tag1.setName("test-tag");
        tag1.setDescription("test");
        tag1.setCreatedAt(LocalDateTime.now());
        tag1.setUpdatedAt(LocalDateTime.now());
        tags.add(tag1);

    }

    // 获取所有标签（GET /tags）
    @GetMapping("/tags")
    public ResponseStruct list() {
        return ResponseStruct.wrap(tags);
    }

    // 获取单个标签（GET /tag/{id}）
    @GetMapping("/tag/{id}")
    public ResponseStruct getTagById(@PathVariable Long id) {
        Optional<Tag> foundTag = tags.stream()
                .filter(tag -> tag.getId().equals(id))
                .findFirst();

        if (foundTag.isPresent()) {
            return ResponseStruct.wrap(foundTag.get()); // 返回找到的标签
        } else {
            // 如果标签不存在，返回错误信息
            return new ResponseStruct(-1, "Tag not found", null);
        }
    }

    // 新增标签（POST /tags）
    @PostMapping("/tags")
    public ResponseStruct addTag(@RequestBody Tag newTag) {
        newTag.setId((long) (tags.size() + 1)); // 模拟自增ID
        newTag.setCreatedAt(LocalDateTime.now());
        newTag.setUpdatedAt(LocalDateTime.now());
        tags.add(newTag);
        return ResponseStruct.wrap(newTag);
    }


}